const baseDao = require("./BaseDao");

const table = "products";

/**
 * 分页查询
 * @param where 查询条件对象
 */
function findByPage(where) {
    return baseDao.findByPage(
        "products p JOIN category c ON cid=c.id JOIN users u ON uid=u.id",
        where,
        "p.id,pname,cgname,uid,uname,pintro,ppicture,ishot,isgood,cid,pprice,selled,mailtype"
    );
}

/**
 *  自定义条件查询
 * @param where
 * @param columns
 * @returns {Promise<unknown>}
 */
function findBy(pid) {
    return baseDao.findBypid(
        "comment c JOIN users u on uid=u.id",
        pid,
        "pid,uid,c.id,uname,uaccount,upassword,ctime,comment"
    );
}

/**
 * 根据id搜索
 * @param id
 * @returns {Promise<*>}
 */
function findById(id) {
    return baseDao.findById(id, table);
}

/**
 * 根据id搜索详细信息
 * @param id
 * @returns {Promise<*>}
 */
 function findPById(id) {
    return baseDao.findBypid(
        "products p JOIN users u JOIN category on p.id=u.id and u.id=c.id ",
        id,
        "p.id,pname,uname,cname,pintro,ppicture,ishot,pprice,state"
    );
}


/**
 * 查询数据总数
 * @param where
 * @returns {Promise<*>}
 */
function getCount(where) {
    return baseDao.getCount("products p JOIN category c ON cid=c.id", where);
}

/**
 * 根据id删除数据
 * @param id
 * @returns {Promise<*>}
 */
function deleteById(id) {
    return baseDao.deleteById(table, id);
}

/**
 * 删除多个ids的数据
 * @param ids
 * @returns {Promise<*>}
 */
function deleteByIds(ids) {
    return baseDao.deleteByIds(table, ids);
}

/**
 * 插入数据到数据库中
 * @param obj
 * @returns {Promise<*>}
 */
function insert(obj) {
    return baseDao.insert(table, obj);
}

/**
 * 编辑
 * @param obj
 * @returns {Promise<*>}
 */
function update(obj) {
    return baseDao.update(table, obj);
}

/**
 * 根据pid搜索
 * @param pid
 * @returns {Promise<*>}
 */
function findBypid(pid) {
    return baseDao.findOne(table, ` where id = '${pid}'`);
}
module.exports = {
    findByPage,
    findById,
    findPById,
    getCount,
    deleteById,
    deleteByIds,
    insert,
    update,
    findBy,
    findBypid,
};